home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / piblist.lbr / FORMATLI.PQS / formatli.pas
Pascal/Delphi Source File  |  1985-03-28  |  5KB  |  118 lines

  1. (*---------------------------------------------------------------------------*)
  2. (*                 Format_Line -- Format text for screen display             *)
  3. (*---------------------------------------------------------------------------*)
  4.  
  5. PROCEDURE Format_Line( Txt: AnyStr; ScrLin : INTEGER );
  6.  
  7. (*---------------------------------------------------------------------------*)
  8. (*                                                                           *)
  9. (*     Routine:  Format_Line                                                 *)
  10. (*                                                                           *)
  11. (*     Purpose:  Format text for screen display                              *)
  12. (*                                                                           *)
  13. (*     Calling Sequence:                                                     *)
  14. (*                                                                           *)
  15. (*        Format_Line( Txt: AnyStr; ScrLin: INTEGER );                       *)
  16. (*                                                                           *)
  17. (*           Txt    --- The text to be displayed                             *)
  18. (*           ScrLin --- Screen row  of 'Txt'                                 *)
  19. (*                                                                           *)
  20. (*     Calls:       TextColor                                                *)
  21. (*                                                                           *)
  22. (*     Called By:   Display_Screen                                           *)
  23. (*                                                                           *)
  24. (*     Remarks:                                                              *)
  25. (*                                                                           *)
  26. (*        Up to a maximum of 'width' characters will be displayed            *)
  27. (*        starting at 'first_col'.  Column one is always displayed           *)
  28. (*        if line-printer controls are requested.  Unprintable               *)
  29. (*        characters are printed as their ASCII mnemonics enclosed           *)
  30. (*        in angular brackets.                                               *)
  31. (*                                                                           *)
  32. (*---------------------------------------------------------------------------*)
  33.  
  34. VAR
  35.    i:      INTEGER;
  36.    j:      INTEGER;
  37.    n:      INTEGER;
  38.    len:    INTEGER;
  39.    c:      CHAR;
  40.    name:   CHAR6;
  41.    Ipos:   INTEGER;
  42.    LColor: CHAR;
  43.  
  44. BEGIN  (* Format_Line *)
  45.  
  46.    len  := LENGTH( Txt );
  47.  
  48.    Ipos := ( ScrLin - 1 ) * 160 + 1;
  49.  
  50.                                    (* If this line is string-search *)
  51.                                    (* result, high-light it.        *)
  52.    IF ScrLin = Search_Lpos THEN
  53.       BEGIN
  54.          LColor      := CHR( Search_Text_Color );
  55.          Search_Lpos := 0;
  56.       END
  57.    ELSE
  58.       LColor := CHR( ForeGround_Color );
  59.  
  60.    IF lpt THEN
  61.       BEGIN
  62.          My_Screen[ Ipos + 1 ] := LColor;
  63.          My_Screen[ Ipos     ] := Txt[1];
  64.          Ipos := Ipos + 2;
  65.          n    := 1;
  66.       END
  67.    ELSE
  68.       n := 0;
  69.  
  70.    i := first_col;
  71.                                    (* Insert each character into screen    *)
  72.                                    (* image.  Strip high bit if requested. *)
  73.  
  74.    WHILE (i <= len) AND (n < width) DO
  75.       BEGIN
  76.  
  77.          c := Txt[i];
  78.  
  79.          i := i + 1;
  80.  
  81.          IF c IN spec_chars THEN
  82.             BEGIN
  83.  
  84.                IF ord(c) = 127 THEN
  85.                   name := '<DEL> '
  86.                ELSE
  87.                   name := spec_names[c];
  88.  
  89.                j := 1;
  90.  
  91.                WHILE (Name[j] <> ' ') AND (n < width) DO
  92.                   BEGIN
  93.                      My_Screen[ Ipos + 1 ] := LColor;
  94.                      My_Screen[ Ipos     ] := Name[j];
  95.                      Ipos := Ipos + 2;
  96.                      j    := j + 1;
  97.                      n    := n + 1;
  98.                   END
  99.             END
  100.          ELSE
  101.             BEGIN
  102.                My_Screen[ Ipos + 1 ] := LColor;
  103.                My_Screen[ Ipos     ] := c;
  104.                Ipos := Ipos + 2;
  105.                n    := n + 1;
  106.             END;
  107.  
  108.       END;
  109.  
  110.    For I := ( n + 1 ) To 80 Do
  111.       BEGIN
  112.          My_Screen[ Ipos + 1 ] := CHR( BackGround_Color );
  113.          My_Screen[ Ipos     ] := ' ';
  114.          Ipos := Ipos + 2;
  115.       END;
  116.  
  117. END   (* Format_Line *);
  118.